package com.itlong.cloud.operate.dao;

import com.itlong.cloud.POJO.PO.ProductTypePO;
import com.itlong.cloud.POJO.VO.operate.OperateProductTypeDetailVO;
import com.itlong.cloud.POJO.VO.operate.OperateProductTypeVO;
import com.itlong.cloud.abstracts.IAbstractBaseDao;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      产品型号信息数据访问接口
 * </desc>
 *
 * @createDate 2017-10-13.
 */
@Mapper
@Repository
public interface IOperateProductTypeDao extends IAbstractBaseDao<ProductTypePO> {

    /**
     * <desc>
     *      根据型号ID判断是否存在
     * <desc/>
     *
     * @param typePid 型号ID
     * @return
     * @author Chunjian.G
     * @createDate 2017-10-13
     */
    Integer checkProductExist(@Param("typePid")String typePid);

    /**
     * <desc>
     *      添加单个产品型号
     * <desc/>
     *
     * @param params 保存参数
     * @return
     * @author Chunjian.G
     * @createDate 2017-10-13
     */
    Integer save(Map<String, Object> params);

    /**
     * <desc>
     *      查询是否有项目关联设备类型
     * <desc/>
     *
     * @param typePid 型号ID
     * @return
     * @author Qiang.S
     * @createDate 2018-07-25
     */
    Integer getProductCount(@Param("typePid") String typePid);

    /**
     * <desc>
     *      删除产品型号
     * <desc/>
     *
     * @param typePid 型号ID
     * @return
     * @author Chunjian.G
     * @createDate 2017-10-13
     */
    Integer removeBatch(@Param("typePid") String typePid);

    /**
     * <desc>
     *      更新单个产品型号
     * <desc/>
     *
     * @param params 更新参数
     * @return
     * @author Chunjian.G
     * @createDate 2017-10-13
     */
    Integer update(Map<String, Object> params);

    /**
     * <desc>
     *      分页查询产品型号简易信息
     * <desc/>
     *
     * @param params 查询参数
     * @return
     * @author Chunjian.G
     * @createDate 2017-10-13
     */
    List<OperateProductTypeVO> getSimplePage(Map<String, Object> params);

    /**
     * <desc>
     *      获取记录数
     * <desc/>
     *
     * @param params 查询参数
     * @return
     * @author Chunjian.G
     * @createDate 2017-10-13
     */
    Integer getCount(Map<String,Object> params);

    /**
     * <desc>
     *      查询单个产品型号详情
     * <desc/>
     *
     * @param typePid 型号ID
     * @return
     * @author Chunjian.G
     * @createDate 2017-10-13
     */
    OperateProductTypeDetailVO getDetail(@Param("typePid") String typePid);


     /**
      * <desc>
      *      获取云电梯的IotProductKey。
      * <desc/>
      *
      * @param  typePid 产品型号ID
      * @return
      * @author shengen.T
      * @createDate 2018-04-17
      */
    String getIotProductKey(@Param("typePid") String typePid);

     /**
      * <desc>
      *      检测是否存在云电梯的产品。
      * <desc/>
      *
      * @param deviceType 设备类型
      * @param typeCode 型号代号
      * @return
      * @author shengen.T
      * @createDate 2018-04-17
      */
    Integer checkCloudElevatorExist(@Param("deviceType") Integer deviceType,@Param("typeCode") String typeCode);
}
